This invention relates to the installation of applications from base computer (such as a desktop computer) to a portable peripheral computer (such as a handheld computer). More particularly, the invention relates to the installation of applications from a base computer to one or more optional memory expansion cards of a portable peripheral computer.
Laptop, handheld, and other portable computers or computing devices have increased in popularity as the devices have become smaller in size and less expensive. Additionally, improved operating speed and processing power of portable computers has increased their popularity. Many portable computers are capable of storing multiple application programs, such as address books, games, calculators, and the like. The application programs can be permanently installed in the portable computer during manufacture (e.g., on read-only memory (ROM)). Alternatively, the application programs may be installed by the user after purchasing the portable computer.
Many of these small computers have limited physical resources. For example, both primary and secondary memory are typically quite limited in comparison to desktop computers. In addition, small computers and other information processing devices often do not accommodate any form of removable mass storage such as floppy disks or optical disks. To make up for this deficiency, such computers are often capable of utilizing the resources of desktop computers or other base computers.
The invention described herein relates to the ability of portable computers such as laptops, handhelds, and palmtops to be programmed in conjunction with a more capable base computer such as a desktop computer. Specifically, the invention relates to the use of a base computer to install programs on a smaller, more resource-limited portable computer. Such programs are typically distributed from their manufacturers on some type of non-volatile storage medium such as a floppy disk or a CD-ROM. Since the portable computer has no hardware to read such a storage medium, the portable computer is instead connected to communicate with a base computer, typically through a serial link. The base computer reads the application program from the non-volatile storage medium and downloads the program to the portable computer.
Portable computers that can receive application programs downloaded from a desktop computer are versatile and allow application programs to be replaced or upgraded easily. Typically, an installation application is run on the desktop computer that allows the user to select one or more application programs for downloading into the portable computer. After selecting the appropriate application programs, the installation application downloads the application programs to the portable computer.
In the environment of xe2x80x9cMicrosoft Windows CExe2x80x9d operating systems, application programs are often distributed in the form of xe2x80x9cCE Cabinet Filesxe2x80x9d or xe2x80x9cCE CAB files.xe2x80x9d xe2x80x9cCE CAB filesxe2x80x9d may also be referred to as xe2x80x9cinstallation filesxe2x80x9d or xe2x80x9csetup package files.xe2x80x9d Throughout this specification, the term xe2x80x9cCAB filesxe2x80x9d shall be understood to mean xe2x80x9cCE CAB files.xe2x80x9d
A CAB file typically includes all of the files of an application program, as well as other setup information such as registry settings. Thus, the CAB file contains all information, files, and other components necessary to install the corresponding application on a computer. To install the application program, the various components of the CAB file are extracted from the CAB file and written separately to the memory of the computer. Other information contained in the CAB file is also extracted from the CAB file and recorded as appropriate. For example, registry information is copied to the computer""s registry.
When installing a program to a portable computer from a base computer, the base computer typically runs an installation program that copies the corresponding CAB file into the memory of the portable computer. Once the CAB file is in memory, a load module in the portable computer then dissects the CAB file and copies its components separately into the computer""s memory. The CAB file components are deleted from the CAB file as they are copied individually to memory, thereby minimizing ongoing memory requirements.
Some portable computers contain a built-in main memory as well as one or more slots or connectors to receive optional memory expansion units or cards. Such expansion cards allow a user to increase the memory resources of a portable computer. Such additional memory resources can be used for storing additional application programs, storing additional data, or executing additional application programs simultaneously.
In many portable computers, the load module is capable of querying its various memory components, including any installed memory expansion cards, to determine and display any available memory locations where an application program might be installed. Such a computer typically presents the user with some sort of visual interface indicating the memory structure of the computer, allowing the user to select an identified memory component as the installed location of a program. In the xe2x80x9cWindows CExe2x80x9d operating environment, different memory devices and locations may be represented as different directories or xe2x80x9cfoldersxe2x80x9d in a graphical display.
In other portable computers, however, this functionality does not exist. Specifically, the operating systems of such computers do not have user interface components that allow a user to xe2x80x9cbrowsexe2x80x9d among the different memory components of the device and to then select one of the memory components to receive an application program. In these computers, an application program is usually installed from a CAB file to the same memory component occupied by the CAB file, without any opportunity for user intervention. An alternative is to request that the user type in a memory specification (or memory location), without the benefit of the more convenient and intuitive graphical interface. This requires a degree of user sophistication that cannot usually be assumed, however, and is therefore very prone to mistakes. A mistake in specifying the memory location results in an aborted installation.
Rather than request a typed memory specification from a user, systems such as this typically install an application program in the same memory location or device as occupied by the CAB file. When copying the CAB file from the base computer, the CAB file is typically copied to a default memory device or location in the portable computer. This default location is usually in the built-in memory of the portable computer. After the CAB file is written to the portable computer""s built-in memory by the base computer, certain portable computers allow the CAB files to be manually copied or moved by a user into the memory of a different memory device such as the memory of a memory expansion card. This results in the application being installed by the load component into the memory of the expansion card (into the same memory as occupied by the CAB file). However, portable computers that do not have a file browser cannot move or copy the CAB files from the portable computer""s default memory device. With these devices, the CAB files (and the installed application) remain in the portable computer""s default memory device.
This installation method is very inconvenient and difficult for many users. In addition, it requires that the built-in memory have enough available capacity to accommodate the entire CAB file. Since CAB files are typically uncompressed, this means that there must be enough built-in memory to accommodate the entire application program, even though the application program is eventually to be installed in memory other than the built-in memory. If the built-in memory space available in the portable computer is insufficient to receive the application program, then the installation will fail regardless of whether there is an installed memory expansion card with sufficient memory to receive the application program. In this situation, the user must either delete one or more application programs from built-in memory or move one or more application programs from built-in memory to an expansion card to free up built-in memory. This process of deleting or moving application programs to increase space available in built-in memory is cumbersome and often requires the reinstallation of deleted application programs after installing and moving other applications to expansion cards.
The invention described below addresses these disadvantages by allowing a user to install application programs from a desktop computer directly to a memory expansion card in the portable computer, whether or not there is enough available built-in memory to accommodate the application program in the portable computer.
The invention allows installation of an application program from a base computer directly to a memory expansion card of a portable peripheral computer. The installation process is controlled by an installation program that runs on the base computer and that communicates with the portable computer by means of a serial link or other form of data communications. The installation program on the base computer interacts with the portable computer and with a user to determine an appropriate location for installing the application program on the portable computer. Thus, intelligent decisions can be made regarding program installation, even though the portable computer itself does not have a graphical interface for selecting memory locations.
The direct installation of the application program to the memory expansion card does not require any use of the built-in memory of the portable computer. Thus, a user can install a new application program to a portable computer without disturbing any of the existing programs or data stored in built-in memory, even if built-in memory is full. Additionally, the invention allows the direct installation of the application program to a memory expansion card in a portable computer that does not include a file browser to identify memory expansion cards (which can be represented as files) in the portable computer.
When an application is selected for installation to a portable computer, an installation program on the base computer determines the size of the selected application. The base computer then determines the storage space available in the built-in memory of the portable computer. If the built-in memory can accommodate the application, then the base computer installs the application to the portable computer""s built-in memory. If the built-in memory cannot accommodate the application, then the base computer determines whether a memory expansion card is installed in the portable computer. If at least one memory expansion card is installed, the base computer attempts to install the application in one of the memory expansion cards. If the first attempt to install the application to a memory expansion card fails (e.g., not enough memory available), then the base computer attempts to install the application to another memory expansion card, if available. If all attempts to install the application to a memory expansion card fail, then the base computer generates a message indicating an unsuccessful installation.
In another implementation of the invention, the base computer identifies all storage locations (i.e., built-in memory and all memory expansion cards) that are capable of receiving the application. The base computer then generates a list of all identified storage locations and asks the user to select the desired storage location for installation. Additionally, the base computer may display the space required to install the application and the space available at each storage location on the list.
Another aspect of the invention considers the size of the application being installed. If the application size exceeds a threshold value, then the base computer first attempts to install the application to a memory expansion card instead of built-in memory. This prevents large applications from using a substantial portion of built-in memory if sufficient space is available on a memory expansion card.